package com.itheima.d1_byteio;

import java.io.FileInputStream;

//目标：掌握使用文件字节输入流每次读取一个字节
public class Demo01 {
    public static void main(String[] args) throws Exception {
        /**
         *  构造器：
         *          FileInputStream(File file)：创建字节输入流管道与源文件对象接通
         *          FileInputStream(String pathname)：创建字节输入流管道与源文件路径接通
         *
         *  读取文件字节数据的方法：
         *          int read()：每次读取一个字节返回，如果字节已经没有可读的返回-1、
         *          int read(byte[] buffer)：每次读取一个字节数组返回，如果字节已经没有可读的返回-1
         *
         *  需求：在当前模块下，创建一个a.txt文件，文件中有内容：java学科真牛批
         *  请使用文件字节输入流读取文件数据，打印到控制台
         */

        //1.创建FileInputStream文件字节输入流对象，指定它读取哪个文件
        //FileInputStream fis = new FileInputStream(new File("day09-io\\a.txt"));
        FileInputStream fis = new FileInputStream("day12\\a.txt");

        //2.调用read()方法，一次读取一个字节，返回的字节整数
        int data = fis.read();
        System.out.println(data);

        //3.将字节整数解码成字符
        System.out.println((char) data);

        //4.循环读取，条件：只要返回的不是-1就继续读
        while ((data = fis.read()) != -1) {
            //进入循环，说明已经读取了一个新的字节，尝试强转
            System.out.println((char) data);
            //英文不会乱码，但是中文在文件是3个字节，这里却拿1个字节解码，不能正常解析，所以乱码！
        }
        //注意：字节流是不推荐拿来参与有解码的操作！因为可能出现中文乱码！
    }
}


